Conventional Transmission Control Protocol (TCP) processing is exemplified by systems and methods developed to facilitate data transfer between a local or remote client and a server. Software implementations executed on a host processor, e.g., Central Processing Unit (CPU), are comparatively inexpensive, but slow compared with dedicated hardware implementations, such as those included within a Network Interface Card (NIC), designed to offload TCP processing from the host processor.
Some of the TCP processing that is offloaded is the computation of TCP's checksum for outgoing frame data. A NIC receives outbound payload data from the CPU, constructs frames, and outputs the frames via a Local Area Network (LAN) interface. Construction of a frame includes constructing a TCP header and an IP header. The TCP header is positioned at the beginning of the frame and includes the TCP checksum field. Conventionally, transmission of the frame cannot begin until the TCP checksum has been calculated, therefore payload data is typically stored in dedicated memory within the NIC until all of the payload data for the frame has been received by the NIC and the TCP checksum is calculated. The TCP checksum is then inserted in the header portion of the constructed frame and the constructed frame is output. Transmission latency is incurred while the NIC waits to receive the entire frame prior to completing the TCP checksum calculation.
Therefore, there is a need to reduce frame transmission latency by beginning transmission of the frame prior to computing the TCP checksum.